home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / libcruft / linpack / spofa.f < prev    next >
Text File  |  1996-07-19  |  2KB  |  72 lines

  1.       SUBROUTINE SPOFA(A,LDA,N,INFO)
  2.       INTEGER LDA,N,INFO
  3.       REAL A(LDA,1)
  4. C
  5. C     SPOFA FACTORS A REAL SYMMETRIC POSITIVE DEFINITE MATRIX.
  6. C
  7. C     SPOFA IS USUALLY CALLED BY SPOCO, BUT IT CAN BE CALLED
  8. C     DIRECTLY WITH A SAVING IN TIME IF  RCOND  IS NOT NEEDED.
  9. C     (TIME FOR SPOCO) = (1 + 18/N)*(TIME FOR SPOFA) .
  10. C
  11. C     ON ENTRY
  12. C
  13. C        A       REAL(LDA, N)
  14. C                THE SYMMETRIC MATRIX TO BE FACTORED.  ONLY THE
  15. C                DIAGONAL AND UPPER TRIANGLE ARE USED.
  16. C
  17. C        LDA     INTEGER
  18. C                THE LEADING DIMENSION OF THE ARRAY  A .
  19. C
  20. C        N       INTEGER
  21. C                THE ORDER OF THE MATRIX  A .
  22. C
  23. C     ON RETURN
  24. C
  25. C        A       AN UPPER TRIANGULAR MATRIX  R  SO THAT  A = TRANS(R)*R
  26. C                WHERE  TRANS(R)  IS THE TRANSPOSE.
  27. C                THE STRICT LOWER TRIANGLE IS UNALTERED.
  28. C                IF  INFO .NE. 0 , THE FACTORIZATION IS NOT COMPLETE.
  29. C
  30. C        INFO    INTEGER
  31. C                = 0  FOR NORMAL RETURN.
  32. C                = K  SIGNALS AN ERROR CONDITION.  THE LEADING MINOR
  33. C                     OF ORDER  K  IS NOT POSITIVE DEFINITE.
  34. C
  35. C     LINPACK.  THIS VERSION DATED 08/14/78 .
  36. C     CLEVE MOLER, UNIVERSITY OF NEW MEXICO, ARGONNE NATIONAL LAB.
  37. C
  38. C     SUBROUTINES AND FUNCTIONS
  39. C
  40. C     BLAS SDOT
  41. C     FORTRAN SQRT
  42. C
  43. C     INTERNAL VARIABLES
  44. C
  45.       REAL SDOT,T
  46.       REAL S
  47.       INTEGER J,JM1,K
  48. C     BEGIN BLOCK WITH ...EXITS TO 40
  49. C
  50. C
  51.          DO 30 J = 1, N
  52.             INFO = J
  53.             S = 0.0E0
  54.             JM1 = J - 1
  55.             IF (JM1 .LT. 1) GO TO 20
  56.             DO 10 K = 1, JM1
  57.                T = A(K,J) - SDOT(K-1,A(1,K),1,A(1,J),1)
  58.                T = T/A(K,K)
  59.                A(K,J) = T
  60.                S = S + T*T
  61.    10       CONTINUE
  62.    20       CONTINUE
  63.             S = A(J,J) - S
  64. C     ......EXIT
  65.             IF (S .LE. 0.0E0) GO TO 40
  66.             A(J,J) = SQRT(S)
  67.    30    CONTINUE
  68.          INFO = 0
  69.    40 CONTINUE
  70.       RETURN
  71.       END
  72.